// vtor_deque.c : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include "vtor_deque.h"
#include "vtor_printf.h"

#ifdef __DEMO_PROJECT__


uint8_t q1buf[400] = {0};
VtorDeque q1 = { q1buf, 400 };
void VtorDeque_Test1()
{
	uint8_t pushBuf[] = { "0123456789" };
	uint8_t popBuf[12] = { "----" };
	int outLen = 0;

	int pushCnt = 3;
	while(pushCnt--)
	{
		VtorDeque_PushBufBack(&q1, pushBuf, 8);
	}
	while((outLen = VtorDeque_PopBufFront(&q1, popBuf, 9)) > 0)
	{
		popBuf[outLen] = '\0';
		VtorDebugPrintf("[%d]<%s>\r\n", outLen, popBuf);
	}
	// 01234567 01234567 01234567 每9个字符截断
	// 012345670 123456701 234567
	//[9]<012345670>
	//[9]<123456701>
	//[6]<234567>
}

void VtorDeque_Test2()
{
	uint8_t pushBuf[] = { "0123\r\n6789abc" };
	uint8_t popBuf[20] = { "-------" };
	int outLen = 0;
	
	int pushCnt = 5;
	while(pushCnt--)
	{
		VtorDeque_PushBufBack(&q1, pushBuf, 3 + pushCnt);
	}
	while((outLen = VtorDeque_PopLineFront(&q1, popBuf, 19)) > 0)
	{
		VtorDebugPrintf("[%d]<%s>\r\n", outLen, popBuf);
	}
	// 0123rn6 0123rn 0123r 0123 012 以n截断   
	// 0123rn 60123rn 0123r0123012
	//[6]<0123
	//>
	//[7]<60123
	//>
	//[12]<0123
	//0123012>
}



void VtorDeque_Init(void)
{
	// 享元模式，初始化内部指针（如果需要的话）
	
	
}


//void VtorTimer_RxCpltTask()
//{
//	uint8_t shellBuf[120] = {0};
//	if(VtorDeque_PopLineFront(&q1, shellBuf, 119))
//	{
//		VtorShell_Scan(shellBuf);
//	}
//	else
//	{
//		VtorTimer_Stop(VtorTimer_RxCpltTask);
//	}
//}

//void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
//{
//	if(huart == &huart1)
//	{
//		// 存储到deque内，重新启动超时任务，继续接收数据
//		VtorDeque_PushBufBack(&q1, &uart1RxByte, 1);
//		VtorTimer_Create(VtorTimer_RxCpltTask, 5);
//		HAL_UART_Receive_IT(&huart1,(uint8_t *)(&uart1RxByte),1);
//	}
//}


#endif //__DEMO_PROJECT__
